package com.habdqn.easybuy.service;

import com.habdqn.easybuy.entity.User;
import com.habdqn.easybuy.exception.LoginException;
import com.habdqn.easybuy.util.Page;

import java.util.List;

/**
 * (User)表服务接口
 *
 * @author Xing.Jiejian
 * @since 2020-11-26 09:47:08
 */
public interface UserService {

    /**
     * 通过ID查询单条数据
     *
     * @param id 主键
     * @return 实例对象
     */
    User queryById(Integer id);

    /**
     * 查询多条数据
     *
     * @param user 查询对象非空属性
     * @param page 分页参数
     * @return 分页对象
     */
    Page<User> queryByPage(User user, Page<User> page);

    /**
     * 新增数据
     *
     * @param user 实例对象
     * @return 实例对象
     */
    User insert(User user);

    /**
     * 修改数据
     *
     * @param user 实例对象
     * @return 实例对象
     */
    User update(User user);

    /**
     * 通过主键删除数据
     *
     * @param id 主键
     * @return 是否成功
     */
    boolean deleteById(Integer id);

    /**
     * 用户登录业务
     *
     * @param username 用户名
     * @param password 密码
     * @return 登录成功后的用户，返回null则表示没有登陆成功
     * @throws RuntimeException 登陆失败的相关信息
     */
    User login(String username, String password) throws LoginException;

}